﻿namespace Storm.Plugins.Attributes
{
	using System;
	using System.Collections.Generic;
	using System.Linq;
	using System.Text;

	using Storm;
	using Storm.Plugins;
	using Storm.Plugins.Attributes;
	using Storm.Plugins.Classes;
	using Storm.Plugins.Enums;
	using Storm.Plugins.Interfaces;

	/// <summary>
	/// Attribute that holds plugin information.
	/// </summary>
	[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
	public sealed class Plugin : Attribute
	{
		#region Fields
		private readonly string _name        = "";
		private readonly string _author      = "";
		private readonly string _description = "";
		private readonly string _version     = "";
		#endregion

		#region Properties
		/// <summary>
		/// Gets the name of the Plugin.
		/// </summary>
		public string Name
		{ get { return _name; } }

		/// <summary>
		/// Gets the author of the Plugin.
		/// </summary>
		public string Author
		{ get { return _author; } }

		/// <summary>
		/// Gets the description of the Plugin.
		/// </summary>
		public string Description
		{ get { return _description; } }

		/// <summary>
		/// Gets the version of the Plugin.
		/// </summary>
		public string Version
		{ get { return _version; } }
		#endregion

		/// <summary>
		/// Initializes the Plugin.
		/// </summary>
		/// <param name="name">Name of the Plugin.</param>
		/// <param name="author">Author of the Plugin.</param>
		/// <param name="description">Description of the Plugin.</param>
		/// <param name="version">Version of the Plugin.</param>
		public Plugin(string name, string author, string description, string version)
		{
			_name = name;
			_author = author;
			_description = description;
			_version = version;
		}
	}
}
